package pl.edu.wsinf.lukaszwalczak.emailclient.view;

import java.io.InputStream;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

/**
 * Klasa pomocnicza do tworzenia widokow. Zawiera statyczne metody do tworzenia przycisków.
 *
 */
public class ViewHelper {

    /**
     * Metoda do prostego tworzenia buttona tylko z tekstem i handlerem.
     *
     * @param text
     * @param handler
     * @return
     */
    public static Button createButton(String text, EventHandler handler) {
        return createButton(text, handler, null, null, null);
    }

    /**
     * Metoda do twrzenia buttona z tekstem, handlerem i ikonka.
     *
     * @param text
     * @param handler
     * @param iconName
     * @return
     */
    public static Button createButton(String text, EventHandler handler, String iconName) {
        return createButton(text, handler, iconName, null, null);
    }

    /**
     * Metoda w ktorej mozna zdefiniowac wszystkie parametry buttona
     *
     * @param text
     * @param handler
     * @param iconName
     * @param width
     * @param height
     * @return
     */
    public static Button createButton(String text, EventHandler handler, String iconName, Double width, Double height) {
        Button button = new Button(text);

        // Ustawiamy obsluge jesli handler jest zdefiniowany
        if (handler != null) {
            button.setOnAction(handler);
        }

        // Ustawiamy ikone jesli iconName jest zdefiniowane
        if (iconName != null) {
            InputStream inputStream = ViewHelper.class.getResourceAsStream("/icons/" + iconName);
            if (inputStream != null) {
                Image icon = new Image(inputStream);
                ImageView imageView = new ImageView(icon);
                button.setGraphic(imageView);
            }
        }

        // Ustawiamy szerokosc/wysokosc jesli podana.
        if (width != null) {
            button.setPrefWidth(width);
        }
        if (height != null) {
            button.setPrefHeight(height);
        }
        return button;
    }
}
